#协程 gevent
#gevent 由c语言编写的 遇到io操作会自动切换 属于主动切换
#gevent.spawn(函数名) 创建协程对象
#gevent.sleep() 耗时操作
#gevent.join() 堵塞,等待某个协程操作结束
#gevent.joinall(list) 等待所有协程对象执行结束再退出,参数是一个协程对象列表
#导入
import gevent
from gevent import monkey
monkey.patch_all()
def sing():
    print("开始唱歌")
    print("唱歌结束")
def dance():
    print("开始跳舞")
    gevent.sleep(1)
    print("跳舞结束")
if __name__ == '__main__':
    #创建协程对象 gevent.spawn(任务名)
    g1 = gevent.spawn(sing)
    g2 = gevent.spawn(dance)
    #阻塞,等待协程执行完毕
    g1.join()
    g2.join()
    print("111")
#time.sleep和gevent.sleep()不一样,gevent只能识别自己的等待操作,这时需要使用monkey补丁
#导入 from gevent import monkey
#使time替换成gevent的sleep monkey.patch_all()
